package com.wing.productionPlan.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wing.productionPlan.model.entity.ProductionPlanRecord;
import com.wing.productionPlan.model.entity.ProductionProcess;
import com.wing.productionPlan.model.response.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 排产记录-Dao
 *
 * @author xiayang
 */
@Mapper
public interface ProductionPlanRecordDao extends BaseMapper<ProductionPlanRecord> {

    /**
     * 排产记录分页列表
     *
     * @param page
     * @param params
     * @return
     */
    List<ProductionPlanRecordVO> pageList(@Param("page") Page<ProductionProcessVO> page, @Param("params") Map<String, Object> params);

    /**
     * 详情
     *
     * @param id 排产记录ID
     * @return
     */
    ProductionPlanRecordVO get(Long id);

    /**
     * 查询在制品信息
     * @param pg 分页信息
     * @param paramMap 入参
     * @return
     */
    List<ProductionPlanRecordReportVO> getPlanRecordCountByIn(@Param("page") Page<ProductionPlanRecordReportVO> pg, @Param("params") Map<String, Object> paramMap);

    /**
     * 查询产品库存
     * @param ids
     * @return
     */
    List<ProductCountInWarhousesVo> warehouseKc(@Param("ids") List<Long> ids);

    /**
     * 查询排产数
     * @param collect
     * @return
     */
    List<ProductionPlanProDetailVO> getplanCountBySkuList(@Param("ids") List<Long> collect);

    /**
     * 查询合格数不合格数
     * @param collect
     * @return
     */
    List<ProductionPlanProDetailVO> getWorkOrderCountBySkuList(@Param("ids") List<Long> collect);

    /**
     * 查询入库数
     * @param collect
     * @return
     */
    List<ProductionPlanProDetailVO> getInWarehouseList(@Param("ids") List<Long> collect);

    /**
     * 查询工序信息
     * @param productDetailId 物料id
     * @return
     */
    List<ProcessReportDetailVO> getProcessReportDetailBy(@Param("productDetailId") Long productDetailId);

    /**
     * 查询制造令分类信息
     * @param productDetailId
     * @return
     */
    List<PlanRecordReportDetailVo> getPlanRecordReportDetails(@Param("productDetailId") Long productDetailId);

    /**
     * 获取制造令入库信息
     * @param collect
     * @return
     */
    List<ProductionPlanRecordWareHouseDetailVO> getInWarehouseByPlanRecord(@Param("ids") Set<Long> collect);
}
